package com.sea.base.ext.global

/**
 * 无锁不支持并发的，适用于单线程
 */
@Suppress("NOTHING_TO_INLINE")
inline fun <T> lazyNone(noinline initializer: () -> T): Lazy<T> = lazy(LazyThreadSafetyMode.NONE, initializer)

/**
 * 无锁支持并发的，可用于多线程（可能被多次调用，但只会返回第一个正确的值）
 */
@Suppress("NOTHING_TO_INLINE")
inline fun <T> lazyPublication(noinline initializer: () -> T): Lazy<T> = lazy(LazyThreadSafetyMode.PUBLICATION, initializer)

//默认的lazy是直接加锁